package com.cskaoyan.javase.array._5operation._2reverse;

import java.util.Arrays;

/**
 * 数组的逆序
 * 逆序也叫逆置,就是将数组中元素前后颠倒过来
 * 比如说对于数组arr,那么逆置就是:
 * arr[0]  <---> arr[arr.length-1]
 * arr[1]  <---> arr[arr.length-2]
 * arr[2]  <---> arr[arr.length-3]
 * ....
 * arr[i] <---> arr[arr.length-i-1]
 *
 * @since 11:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        System.out.println("交换之前:" + Arrays.toString(arr));
        reserve(arr);
        System.out.println("交换之后:" + Arrays.toString(arr));
    }


    // 数组的逆置,可以直接在原先数组中做,这个方法可以不给返回值
    public static void reserve(int[] arr) {
        // 核心arr[i] <---> arr[arr.length-i-1]
        /*
            这个遍历交换的过程,进行数组的一半就可以了
            如果遍历完整个数组,那就交换了两次,又换回来了
         */
        for (int i = 0; i < arr.length / 2; i++) {
            // 交换元素的取值,需要一个临时的变量用来存储被覆盖的取值
            /*int temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;*/
            swapIntValue(arr[i], arr[arr.length - i - 1]);
        }
    }


    public static void swapIntValue(int a, int b) {
        int temp = a;
        a = b;
        b = temp;
    }

}
